11.01.2011
Данный механизм позволяет выполнить перепроведение большого количества документов за период более быстрым по сравнению со стандартными средствами способом.
Одним из факторов, увеличивающим время проведения документа задним числом, является обращение в ходе его проведения к неактуальным итогам регистров накопления или бухгалтерии. Таким обращением может, например, быть обращение к виртуальным таблицам Остатки этих регистров.
Чтобы понять, в чем именно заключается причина увеличения времени обращения к неактуальным итогам, следует представлять, каким образом платформой 1С:Предприятие 8 получаются остатки из этих регистров (на примере регистра накопления).
Данные регистра накопления (с видом Остатки) сохраняются в БД в двух таблицах: "таблице движений" и "таблице итогов". Структура первой таблицы известна, именно из нее получаются данные при выполнении запроса вида:
ВЫБРАТЬ * ИЗ РегистрНакопления.ТоварыНаСкладах
Вторая таблица является служебной, в ней хранятся рассчитанные остатки по измерениям регистра по периодам (месяцам). В этой таблице всегда присутствуют записи актуальных остатков (на текущую дату), записи по другим периодам добавляются в таблицу при выполнении операции установки актуальности итогов. При этом добавляемые записи соответствуют остаткам регистра, рассчитанных на начало месяца, следующего после указанной даты.
То есть если регистр был рассчитан по 31.10.2005, в таблице будут присутствовать записи на 01.11.2005 0:00:00.
Соответственно, получение остатка по набору измерений из регистра на произвольную (не текущую) дату упрощенно можно представить следующим образом:
Пример
Регистр накопления ТоварыНаСкладах рассчитан по 31.10.2005.
Требуется получить остаток на 05.10.2005 13:00:00.
В этом случае из "таблицы итогов" будет "взят" остаток на 01.11.2005.
От полученного остатка будут "вычтены" движения по данному набору измерений, где {05.10.2005 13:00:00} <= период < {01.11.2005 0:00:00}.
Из приведенного описания видно: чем больше движений попадает в период между необходимой датой и границей рассчитанных итогов, тем дольше будет выполняться запрос к остаткам, причем эта зависимость является нелинейной.
Рассматриваемый здесь механизм позволяет выполнить перепроведение документов с учетом данной особенности. Это достигается удалением из регистров всех "мешающих" движений, попадающих в период между моментом времени проводимого документа и ближайшего рассчитанного остатка.
То есть групповое перепроведение выполняется в два этапа:
Ограничением данного механизма является необходимость обязательного перепроведения всех документов от начала указанного периода до ближайшей границы рассчитанных итогов или, если в данном периоде такой границы нет, до самого последнего документа.
Также следует учитывать, что данный механизм не удаляет движения документов, "введенных вручную". То есть документов, чьи движения формируются не в процедуре ОбработкаПроведения(), а вводятся непосредственно пользователем. Примером такого документа может служить документ Операция (бухгалтерский и налоговый учет) типовой конфигурации Бухгалтерия предприятия, в котором движения по регистру бухгалтерии Хозрасчетный заполняются пользователем непосредственно в форме документа.
Наличие в информационной базе большого количества подобных документов может отрицательно сказаться на эффективности применения данного механизма.
Механизм группового перепроведения следует применять при перепроведении большого количества документов за период в информационных базах с большим документооборотом.